package com.wzq.animal.utils;

import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.DES;
import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
import cn.hutool.crypto.symmetric.SymmetricCrypto;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import java.io.IOException;

public class CipherUtils {
    ////生成密钥，并转为字符串，可以储存起来，解密时可直接使用
    //private static final byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.DES.getValue()).getEncoded();
    //private static final String secretKey = new BASE64Encoder().encodeBuffer(key);
    //
    ////info:需要加密的明文
    //public static String encrypt(String info) {
    //    byte[] key = new byte[0];
    //    try {
    //        key = new BASE64Decoder().decodeBuffer(secretKey);
    //    } catch (IOException e) {
    //        e.printStackTrace();
    //    }
    //    DES des = SecureUtil.des(key);
    //    String encrypt = des.encryptHex(info);
    //    return encrypt;
    //}
    //
    ////encrypt:需要解密的密文
    //public static String decode(String encrypt) {
    //    byte[] key = new byte[0];
    //    try {
    //        key = new BASE64Decoder().decodeBuffer(secretKey);
    //    } catch (IOException e) {
    //        e.printStackTrace();
    //    }
    //    DES des = SecureUtil.des(key);
    //    return des.decryptStr(encrypt);
    //}

    private static final SymmetricCrypto des;
    static {
        // sgEsnN6QWq8W7j5H01020304即为密钥明文长24位，
        // 不够则会随机补足24位
        des = new SymmetricCrypto(SymmetricAlgorithm.DES, "sgEsnN6QWq8W7j5H01020304".getBytes());
    }

    /**
     * des解密
     * @param content 密文
     * @return 解密后的明文
     */
    public static String decrypt(String content) {
        return des.decryptStr(content);
    }

    /**
     * des加密
     * @param content 明文
     * @return 加密后的密文
     */
    public static String encrypt(String content) {
        return des.encryptHex(content);
    }

}
